package main

import (
	"fmt"
	"sync"
)

func consumer(queue chan int) {
	defer wg.Done()
	data := <-queue

	fmt.Println(data)
}

var wg sync.WaitGroup

func main() {
	/*
	 chennel 提供了一种通信机制，定向
	*/

	var msg chan int // 放的类型

	// 初始化这个channel
	//msg = make(chan int) // 第一种初始化方式： 无缓冲 .// 会死锁
	msg = make(chan int, 1) // 第二种方式： 有缓冲空间的
	//在go 中 make 初始化有三种，1.slice 2. map  3.channel
	msg <- 1 // 将1 放入到channel 中
	//msg <- 2 //  你这个管道看起来就是一个有空间的数组 // 死锁
	wg.Add(1)
	go consumer(msg)
	wg.Wait()
	//data := <-msg
	//fmt.Println(data) // 会报死锁的错误

}
